1. Field of the Invention
This invention relates to multiprocessor computer systems, and in particular to dedicated input/output (I/O) processors in computer systems.
2. Description of the Related Art
Multiprocessor computer systems have become commonplace. For example, many personal computers which comprise a plurality of Intel Pentium.RTM. or Pentium-class processors are available in the marketplace. These multiprocessor systems are largely employed in network server environments which require large amounts of input/output (I/O). For example, many mass storage I/O operations and/or network I/O operations must be performed in network server systems. The I/O operations involve the transfer of data between I/O devices and system memory. An operating system, in particular device drivers, executing on the system processors programs the I/O devices to perform the I/O operations. Furthermore, the device drivers of the operating system executing on the system processors perform other I/O-related functions such as servicing interrupts generated by the I/O devices.
In many cases, the I/O processing performed by the system processors, particularly interrupt servicing and accessing registers within the I/O devices across an I/O bus to which the I/O devices are coupled, constitute a large processing bandwidth burden on the system processors. Hence, a trend toward dedicated I/O processors to offload the system processors has appeared. An example of a contemporary architecture which employs I/O processors to offload I/O processing functions from system processors is the Intelligent I/O (I.sup.2 O) architecture. The I.sup.2 O standard is described in the I.sup.2 O Architecture Specification, Draft Revision 1.5, March 1997, which is hereby incorporated by reference in its entirety. The I.sup.2 O architecture is independent of operating system, processor platform, and system I/O bus. The specification provides a means for migrating large portions of device drivers from the system processors to the dedicated I/O processors. According to this architecture, the portions of the device driver which remain in the host operating system are relatively small, portable and easily maintained.
The I.sup.2 O architecture provides a real-time kernel which executes on an I/O processor which controls one or more I/O devices. Portions of the device drivers for the I/O devices from the host operating system are adapted and migrated to execute on the I/O processor in conjunction with the real-time kernel. The architecture specifies an interface for host operating system device drivers to communicate with the I/O device drivers executing on the I/O processors across and I/O bus to which the I/O devices are coupled.
One approach to a dedicated I/O processor architecture has been disclosed in U.S. patent application Ser. No. 09/152,997 entitled Method and System for Implementing Intelligent Distribution Input/Output Processing in a Multi-Processor Computer System (P-1359) which was filed on Sep. 14, 1998, whose inventor is Thomas J. Bonola, which is assigned to Compaq Computer Corporation, and which is hereby incorporated by reference in its entirety as though fully set forth herein. The referenced patent application describes a method for dedicating one of the system processors, such as a Pentium processor in a multiprocessor system, to perform the functions of an I.sup.2 O processor. That is, the dedicated I/O system processor executes the I.sup.2 O real-time kernel, which is dissimilar from the host operating system executing on the remaining system processors. The dedicated I/O system processor also executes those portions of the device drivers which are migrated to the I/O processor. The dedicated I/O system processor essentially emulates the hardware interface specified for I.sup.2 O devices using system memory rather than actual hardware FIFOs. Thus, in at least one example, it is desirable to execute a software program dissimilar from the host operating system on one of the multiple processors in a multiprocessor system.
A pertinent characteristic of x86 processors is that they are capable of running in mixed modes, namely real mode and protected mode, as is well known in the art of programming x86 processors. The fact that the system processors initially run in real mode but eventually are typically switched to run in protected mode by the host operating system, such as Windows NT or UNIX, poses some problems. Typically, the host operating system is loaded from a non-volatile storage device, such as a disk drive. The operating system is loaded from the disk drive by some operating system independent means, such as using Basic Input/Output System (BIOS) disk service calls, e.g., INT13H calls, while in real mode. Device drivers are also loaded and after switching to protected mode, the device drivers access their associated I/O devices. However, if one of the system processors is to serve as a dedicated I/O processor in the system, programs such as the real-time kernel which executes on the dedicated I/O system processor must be loaded into system memory and executed on the dedicated I/O system processor prior to the time when the device driver executing on the host system processors attempts to access the dedicated I/O system processor. Thus, a system and method is desired for loading an executable program from a non-volatile storage device after the host operating system has been loaded but prior to execution of the host operating system device drivers.